package day20170418.random;

import java.math.BigDecimal;
import java.util.Random;

import org.junit.Test;

public class WeChatLeeIs {
	
	/**
	 * 发红包测试
	 * @throws Exception
	 */
	@Test
	public void redBaoTest() throws Exception {
		redBao(7,100.00);
	}
	
	/**
	 * 发红包小程序
	 * @param number		抢红包的人数
	 * @param totalMoney	红包金额
	 */
	public void redBao(Integer number,Double totalMoney) {
		// 总共多少人
		double len = number;
		// 总共多少钱
		Double allMoney = totalMoney;
		//每个人最多拿多少钱（7个人最好除以4（比较平均），如果大于4，最后一个人的最多，小于4，最后一个人是负数）
		Double avgMoney = allMoney/4;
		
		//保留后面2位小数
		BigDecimal avg = new BigDecimal(avgMoney);
		avgMoney = avg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
		

		Random random = new Random();
		//人数
		int i = 1;
		while (true) {
			//如果人数等于最后一个人
			if(i == len){
				//保留2为小数
				BigDecimal getMoney = new BigDecimal(allMoney);
				allMoney = getMoney.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
				//最后一个人拿到了全部的钱
				System.out.println("第"+i+"拿到了："+allMoney+"元");
				return;
			}else{
				Double money = random.nextDouble();
				money = money * 100;
				//判断随机到的钱是否大于一个人最多拿的前
				if(money > avgMoney){
					//如果大于，结束本次循环继续下次循环
					continue;
				}else{
					//保留后面2为
					BigDecimal getMoney = new BigDecimal(money);
					money = getMoney.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
					//当前这个人拿当到了钱
					System.out.println("第"+i+"拿到了："+money+"元");
					//总金额减掉
					allMoney = allMoney - money;
					//到了下个人拿
					i++;
				}
			}
		}
	}
}
